Graphics and video processing hardware and software continue to become more capable, as well as more accessible, each year. Graphics and video processing circuitry is typically present on an add-on card in a computer system, but is also found on the motherboard itself. The graphics processor is responsible for creating the picture displayed by the monitor. In early text-based personal computers (PCs) this was a relatively simple task. However, the complexity of modern graphics-capable operating systems has dramatically increased the amount of information to be displayed. In fact, it is now impractical for the graphics processing to be handled by the main processor, or central processing unit (CPU) of a system. As a result, the display activity has typically been handed off to increasingly intelligent graphics cards which include specialized coprocessors referred to as graphics processing units (GPUs) or video processing units (VPUs).
In theory, very high quality complex video can be produced by computer systems with known methods. However, as in most computer systems, quality, speed and complexity are limited by cost. For example, cost increases when memory requirements and computational complexity increase. Some systems are created with much higher than normal cost limits, such as display systems for military flight simulators. These systems are often entire one-of-a-kind computer systems produced in very low numbers. However, producing high quality, complex video at acceptable speeds can quickly become prohibitively expensive for even “high-end” consumer-level systems. It is therefore an ongoing challenge to create VPUs and VPU systems that are affordable for mass production, but have ever-improved overall quality and capability.
Another challenge is to create VPUs and VPU systems that can deliver affordable, higher quality video, do not require excessive memory, operate at expected speeds, and are seamlessly compatible with existing computer systems.
There are various aspects of video processing that typically require some trade-off between quality and performance to be made. One example is correcting for aliasing, usually referred to as anti-aliasing or “AA”. Aliasing is a well known effect created by the appearance in a displayed frame of artifacts of the rendering process. Rendering is performed by the VPU, and involves drawing the pixels to be displayed. Aliasing includes edge aliasing and surface aliasing. Edge aliasing creates stair steps in an edge that should look smooth. Surface aliasing includes flashing or “popping” of very thin polygons, sometimes referred to as moiré patterns. Existing AA techniques for alleviating these effects include multisampling and supersampling. Multisampling addresses edge aliasing by creating multiple samples of pixels which are used to generate intermediate points between pixels. The samples are averaged to determine the displayed pixel color value. The displayed edge in the multisampled image has a softened stair step effect. Multisampling has no affect on surface aliasing.
Supersampling will address both edge aliasing and surface aliasing. However, supersampling is computationally more expensive than multisampling and is rarely performed in consumer systems. Pixel centers, as opposed to pixels, carry texture information. In supersampling, each pixel is rendered multiple times with different pixel centers to yield multiple color values which are then averaged to give a final pixel color. This gives the entire image a softened effect.
One reason it is inefficient to do either multisampling or supersampling in conventional systems is that the pixel data must be run through the video processing pipeline in the VPU more than once to create offset samples with respect to pixels or pixel centers. This increases the number of computations, and increases processing time.